package JavaStudy.sort;
//冒泡排序
/*
* 一轮冒泡就会找到最大值，所以第I轮的时候不用对比最后I-1个数,比如说第三轮不用去对比最后2个数，肯定是最大的2个
* 可以增加一个flag ，如果一轮下来都没有发生对调，说明已经排序完成，提前停止，不用再对比前面的数了
* */
public class BubbleSort {
    public static int[] bubbleSort(int[] a) {
        if (a !=null&&a.length>1){//其实算是一个死循环，但是后面可以添加一个flag，当内循环完全结束了，那么就代表已经不用排序了，此时break
            for (int i =0;i<a.length-1;i++){
                boolean flag = true;
                for (int j = 0;j<a.length-i-1;j++){//-i是因为一次冒泡之后，后i位其实是已经排好了的状态（最大的数将会排到最后面），所以就不必去排序了，当然不减也是可以，浪费性能而已
                    if (a[j]>a[j+1]){
                        int temp;
                        temp=a[j];
                        a[j]=a[j+1];
                        a[j+1]=temp;
                        flag=false;//出现内循环了，
                    }
                }

                for (int kkk:a){
                    System.out.print(kkk+",");
                }
                System.out.println("   这是第"+i+"次");

                if (flag==true){
                    for (int kkk:a){
                        System.out.print(kkk+",");
                    }
                    System.out.println("   最终");
                    break;
                }
            }

        }
        return a;
    }
    public static void main(String[] args) {
        int[] a={6,13,8,9,5,1,2,3,7,15,4,14,12,11};
        for (int kkk:a){
            System.out.print(kkk+",");
        }
        System.out.println("  开始");
        int[] b=bubbleSort(a);
    }
}
